package com.ziyun.erp.modules.production.service;

import com.baomidou.mybatisplus.service.IService;
import com.ziyun.erp.modules.order.dto.OrderCraftQuoteDto;
import com.ziyun.erp.modules.order.entity.OrderInfoEntity;
import com.ziyun.erp.modules.order.vo.OrderCraftServerVo;
import com.ziyun.erp.modules.production.dto.FinancePaymentDto;
import com.ziyun.erp.modules.production.dto.ProductionCostDto;
import com.ziyun.erp.modules.production.vo.ErpOrderProductionListVo;
import io.renren.common.utils.PageUtils;
import com.ziyun.erp.modules.production.entity.ErpOrderProductionEntity;
import io.renren.common.utils.R;

import java.util.List;
import java.util.Map;

/**
 * erp订单生产表
 *
 * @author guizhao
 * @email ...
 * @date 2018-08-22 10:32:12
 */
public interface ErpOrderProductionService extends IService<ErpOrderProductionEntity> {

    PageUtils queryPage(Map<String, Object> params);

    void updateByMap(Map<String,Object> updateMap, Integer productionId);

    List<ErpOrderProductionEntity> queryOtherOrderProduction(String orderNo, Integer productionId);

    R yangluoSend(Integer eoItemId,Integer csId,Integer pmcId);

    /**
     * 验货确定
     * @param productionId
     * @return
     */
    R confirmReceive(Integer productionId);

    /**
     * 审核完成
     * @param productionId
     * @return
     */
    R auditFinish(Integer productionId);

    /**
     * 生产列表(分页)
     * @param params
     * @return
     */
    R queryPageProductionList(Map<String, Object> params);

    /**
     * 分配列表
     * @param params
     * @return
     */
    List<ErpOrderProductionListVo> queryProductionList(Map<String, Object> params);

    /**
     * 商品发货（订单状态改变）
     * @param orderInfo
     */
    void erpOrderItemAddLogistics(OrderInfoEntity orderInfo, Integer logiType);

    /**
     * 商品生产完成（订单状态改变）
     * @param orderNo
     */
    void erpOrderItemFinish(String orderNo);

    /**
     * 生产单生产完成（商品状态改变）
     * @param erpItemId
     */
    void productionFinish(Integer erpItemId);

    /**
     * 查询快递单信息
     * @param orderNo
     * @return
     */
    R queryExpressFormInfo(String orderNo);

    /**
     * 批量修改
     * @param updateMap
     * @param proIds
     * @return
     */
    boolean updateBatchByMap(Map<String, Object> updateMap, List<Integer> proIds);

    /**
     * 阳逻发货信息
     * @param productionIds
     * @return
     */
    R sendYangluoLogisticsInfo(String productionIds);

    /**
     * 调价
     * @param productionCostDto
     * @return
     */
    R orderDiscount(ProductionCostDto productionCostDto, String username);

    /**
     * 查询已分配工序列表
     * @param itemId
     * @return
     */
    List<OrderCraftQuoteDto> selectAllotedCraftsList(Integer itemId);

    /**
     * 查询已分配服务工序列表
     * @param erpItemId
     * @return
     */
    List<OrderCraftServerVo> selectAllotedServerCraftsList(Integer erpItemId);

    /***
     * 录入成本价
     * @param erpOrderProduction
     * @return
     */
    void updatecost(ErpOrderProductionEntity erpOrderProduction);

	/*
	 * 生产成本价/审核
	 */
    void toExamine(Integer productionId);
    
	/*
	 * 生产成本价/订单作废
	 */
    void toDead(ErpOrderProductionEntity erpOrderProduction);
    
    /*
	 * 生产成本价/订单撤回待审
	 */
    void toWithdraw(Integer productionId);
    
    /*
     * 生产成本价/订单付款
     */
    R toPayment(FinancePaymentDto financePaymentDto);

    List<ErpOrderProductionListVo> exportExcel(Map<String, Object> params);

    boolean updateByMapOrderId(Map<String, Object> updateMap, String orderId);

    R supplierConfirmReceive(Integer productionId);

    R toBatchExamine(String productionIds);

    R productionCostCount(Integer[] productionIds);

    R storelist(Map<String, Object> params);

    R productcostlist(Map<String, Object> params);

    List<ErpOrderProductionEntity> getErpOrderProductionEntity(String orderNo);

    R review(Integer productionId);

    R orderSourceFile(Integer productionId);

    R sellerlist(Map<String, Object> params);

    R batchEnteringCost(Integer[] productionIds);

    R getProducerList(String producerName);
}


